package pool

/*
用来控制二进制流的
主要用在发消息的时候，并数据流用的
如果消息数据加起来没有超过1000字节，那会有性能提升；
*/
type ByteSteam struct {
	buf     []byte
	dataLen int //数据长度

}

func NewByteSteam(buf []byte) *ByteSteam {
	return &ByteSteam{
		buf: buf,
	}
}

// 获取空数据部分
func (this *ByteSteam) GetNilBuff() []byte {
	return this.buf[this.dataLen:]
}

// 获取数据部分
func (this *ByteSteam) GetDataBuff() []byte {
	return this.buf[:this.dataLen]
}

func (this *ByteSteam) GetLen() int {
	return this.dataLen
}

// 读完数据后，需要设置长度
func (this *ByteSteam) AddLen(l int) {
	this.dataLen += l
}

//复位
func (this *ByteSteam) ReSet() {
	this.dataLen = 0
}

func (this *ByteSteam) Copy(data []byte) {
	copy(this.buf[this.dataLen:], data)
	this.dataLen += len(data)
}
